home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / pvm34b3.zip / pvm34b3 / pvm3 / libfpvm / pvmfconfig.m4 < prev    next >
Text File  |  1997-07-22  |  1KB  |  63 lines

  1.  
  2. /* $Id: pvmfconfig.m4,v 1.4 1997/05/07 18:07:30 pvmsrc Exp $ */
  3.  
  4. #include "pvm3.h"
  5. #include "pvm_consts.h"
  6. #include "../src/bfunc.h"
  7.  
  8. void
  9. FUNCTION(pvmfconfig)
  10.     ARGS(`nhostp,
  11.         narchp,
  12.         tidp,
  13.         STRING_ARG(name),
  14.         STRING_ARG(arch),
  15.         speedp,
  16.         infop')
  17.  
  18.     int  *nhostp, *narchp, *tidp, *speedp, *infop;
  19.     STRING_ARG_DECL(name);
  20.     STRING_ARG_DECL(arch);
  21. {
  22.     static struct pvmhostinfo *hip = 0;
  23.     static int nhost = 0;
  24.     static int narch = 0;
  25.     static int next = 0;
  26.  
  27.     int nh;
  28.     int cc;
  29.  
  30. /* if user sets nhostp to -1 then pvmfconfig() will be reset */
  31.  
  32.     if ( nhost && nhostp && (*nhostp == -1) )
  33.         nhost = 0;
  34.  
  35.     if ( !nhost ) {
  36.         if ( (cc = pvm_config( &nh, &narch, &hip )) < 0 ) {
  37.             *infop = cc;
  38.             return;
  39.         }
  40.         nhost = nh;
  41.         next = 0;
  42.     }
  43.  
  44.     if ( next < nhost ) {
  45.         if ( nhostp ) *nhostp = nhost;
  46.         if ( narchp ) *narchp = narch;
  47.         if ( tidp ) *tidp = hip[ next ].hi_tid;
  48.         if ( STRING_PTR(name) )
  49.             ctofstr( STRING_PTR(name), STRING_LEN(name),
  50.                     hip[ next ].hi_name );
  51.         if ( STRING_PTR(arch) )
  52.             ctofstr( STRING_PTR(arch), STRING_LEN(arch),
  53.                     hip[ next ].hi_arch );
  54.         if ( speedp ) *speedp = hip[ next ].hi_speed;
  55.         *infop = 1;
  56.         next++;
  57.     }
  58.  
  59.     if ( next == nhost )
  60.         nhost = 0;
  61. }
  62.  
  63.